<HTML>

<HEAD>
<TITLE>Debug multi-débits</TITLE>
<META http-equiv="Content-Type" content="text/html;charset=utf-8" />

<script type="text/javascript">
onload=function(){
	if (document.getElementsByClassName == undefined) {
		document.getElementsByClassName = function(className)
		{
			var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
			var allElements = document.getElementsByTagName("*");
			var results = [];

			var element;
			for (var i = 0; (element = allElements[i]) != null; i++) {
				var elementClass = element.className;
				if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
					results.push(element);
			}

			return results;
		}
	}
}

function toggleCorrected() {
	var correctedElements = document.getElementsByClassName('corrected');
	for (var i = 0; (element = correctedElements[i]) != null; i++) {
		toggleRow(element.id);
	}
}

function toggle(element){

	if(document.getElementById(element).style.display == "block") {
		document.getElementById(element).style.display = "none";
	} else {
		document.getElementById(element).style.display = "block";
	}
}

function toggleRow(element){

	if(document.getElementById(element).style.display == "table-row") {
		document.getElementById(element).style.display = "none";
	} else {
		document.getElementById(element).style.display = "table-row";
	}
}

function valider() {
	if (confirm('Êtes vous sûr des données que vous avez entré ? \n \n La demarche est définitive et ne peut être inversée.')) {
		document.getElementById('form-reg').submit(); 
	}
}
</script>
<style type="text/css">
.true-transaction {
	font-weight: bold;
}

.corrected {
	color: green;
}
</style>
</HEAD>

<BODY>

<div
	style="text-align: center; width: 800px; border: 1px solid grey; margin: auto;">
<h2>Présentation</h2>
<p>Cette page est destinée à rectifier les débits qui sont dûs au bug
"multi-débits".<br>
Ce bug, dont l'origine est inconnue, débite plusieurs fois une même
vente pour un même client<br>
à quelques dizaines de secondes d'écart au plus.</p>
</div>

<h2>Mode d'emploi</h2>
<p>Les choses à savoir sur cette page :</p>
<ul>
	<li>Chaque opération nécessite le mot de passe de la base de données.</li>
	<li>Dans un premier temps, entrez le mot de passe pour avoir accès à la liste des multi-débits</li>
	<li>Dans la liste, les "vraies" ventes sont en gras. Celles qui suivent sont des "ventes en trop".</li>
	<li>Si aucune régulation n'a été trouvée pour la vente alors, elle est cochée par défaut pour faire une régulation.</li>
	<li>Si une régulation a été trouvée, c'est indiqué et l'utilisateur est invité à l'examiner de plus prêt pour déterminer s'il faut faire une nouvelle régulation ou pas.</li>
	<li>Une fois les régulations effectuées, seule la liste des multi-débits non-régulés par le script est affichée. Il est possible de tous les afficher en cliquant sur la case correspondante.</li>
</ul>


<?php

if (empty($_POST[ref])) {?>
	<div style="margin-left: 30px;">
		<FORM NAME="form-pwd" METHOD=POST ACTION="" ID="form-pwd"><INPUT
				TYPE="HIDDEN" NAME="ref" VALUE="form-pwd">
			<H3>Password de la base de donnée :</H3>
			<INPUT TYPE="PASSWORD" NAME="pwd" VALUE="" SIZE=50>
			<BUTTON CLASS="DEFAULT" TYPE="BUTTON">Afficher les données</BUTTON>
		</FORM>
	</div>
<?php
} else {
	
	$db = pg_connect("host=localhost port=5432 dbname=codebar3 user=baradmin password=".$_POST[pwd]) or die('Connection DB failed');
	
	$query = pg_query($db,"SELECT * FROM cb_historique_vente ORDER BY id_action ASC;");
	$array = pg_fetch_all($query);
		
	if ($_POST[ref] == "form-reg") {
	
		$filename = "debug_".date(Ymd_His).".csv";
	
		echo "Archive des modifications, total des régulations par groupe : <a href=\"".$filename."\">".$filename."</a>";
	
		
		$array_id_vente = explode(";", $_POST['listIdVente']);
		$buffer_query = NULL;
		$array_groupe_csv = array();
		foreach ($array_id_vente as $elem) {
			$elem = explode("%",$elem);
			$id_vente = $elem[0];
			$groupe = $elem[1];
			if ($_POST['recharge'.$id_vente] == "on") {
				$array_groupe_csv[$groupe] += $_POST['montant'.$id_vente];
				$buffer_query = $buffer_query.
					"UPDATE cb_users SET solde=solde+".$_POST['montant'.$id_vente]." WHERE login=(SELECT login_client FROM cb_historique_vente WHERE id_action=".$id_vente.");
					INSERT INTO cb_historique_carte(login,montant,commentaire,verif,login_vendeur,date) VALUES
					((SELECT login_client FROM cb_historique_vente WHERE id_action=".$id_vente."),'".$_POST['montant'.$id_vente].
					"','régulation automatisée suite au bug multi-débits, vente n°".$id_vente.", groupe n°".$groupe."','FALSE','baradmin','".date('Y-m-d H:i:s')."');";
			}
		}
		if(!pg_query($db,$buffer_query)) {
			echo "Erreur SQL<br/>";
			echo $buffer_query;
		}
		
		echo "<h3>Résumé des montants de remboursement</h3><ul>";
		$array_keys = array_keys($array_groupe_csv);
		foreach ($array_keys as $key) {
			$file = fopen($filename,"a");
			fputs($file, $key.";".$array_groupe_csv[$key]."\n");
			echo "<li>".$key." : ".$array_groupe_csv[$key]."€ remboursés.</li>";
		}
		echo "</ul>";
	
	
	}
	
?>


<div style="margin: auto; text-align:center">
<FORM NAME="form-reg" METHOD=POST ACTION="" ID="form-reg">
	<INPUT TYPE="HIDDEN" NAME="ref" VALUE="form-reg">
	<H3>Pour faire des modifications, il faut le password de la base de donnée :</H3>
	<INPUT TYPE="PASSWORD" NAME="pwd" VALUE="" SIZE=50>
	<br/>
	<br/>
	<p>Afficher les multi-débits déjà corrigés par ce script ?
		<input type="checkbox" onclick="toggleCorrected();"/>
	</p>
	<br/>
<table border="1" width="1100px;" style="margin: auto;">
	<thead><tr><th>id_vente</th><th>client</th><th>date</th><th>montant</th><th width="600px">groupe</th></tr></thead>
	<tbody>

<?php
	$i = 0;
	
	$array_for_post = NULL;

	
	while ($i < count($array)-1) {
		$j = 1;
		$buffer = NULL;
		$array_groupe = array();
		
		while ($array[$i]['login_client'] == $array[$i+$j]['login_client'] && $array[$i]['montant'] == $array[$i+$j]['montant'] 
			&& $array[$i]['login_client'] != "vente_espèce") {
			if ($j ==1) {
				$query_groupe = pg_query($db,"SELECT * FROM cb_groupes WHERE id_groupe =".$array[$i]['id_groupe'].";");
				$array_groupe = pg_fetch_all($query_groupe);
				
				$buffer = $buffer."<tr id=\"transaction".$array[$i]['id_action']."\" class=\"true-transaction not-corrected\" style=\"display: table-row;\"><td>".$array[$i]['id_action'].
					"</td><td>".$array[$i]['login_client']."</td><td>".$array[$i]['date']."</td><td>".$array[$i]['montant']."</td><td>".$array_groupe[0]['nom']."</td></tr>\n";
			}
			else
			{
				$buffer = $buffer."</td></tr>\n";
			}

			$buffer = $buffer."<tr id=\"transaction".$array[$i+$j]['id_action']."\" class=\"false-transaction not-corrected\" style=\"display: table-row;\"><td>".$array[$i+$j]['id_action']."</td><td>"
				.$array[$i+$j]['login_client']."</td><td>".$array[$i+$j]['date']."</td><td>".$array[$i+$j]['montant']."</td><td>";
			$j++;
		}
		
		if ($j > 1)
		{
			$r = ($j-1)*$array[$i]['montant'];
			
			$array_reg = array();
		
			$array_for_post = $array_for_post.$array[$i]['id_action']."%".$array_groupe[0]['id_groupe']." ".$array_groupe[0]['nom'].";";
			$query_reg = pg_query($db, "SELECT * FROM cb_historique_carte WHERE login ='".$array[$i]['login_client'].
				"' AND commentaire LIKE '%régulation%' AND date > '".$array[$i]['date']."';");
			$array_reg = pg_fetch_all($query_reg);

			foreach ($array_reg as $regulation) {
				if (preg_match("#automatisée#", $regulation['commentaire']) && $regulation['montant'] == $r) {
					$buffer = preg_replace("(not-corrected)", "corrected", $buffer);
					$buffer = preg_replace("(table-row)", "none", $buffer);
				}
			}
			
			$checked = NULL;
			if (empty($array_reg)) {
				$checked = "checked";
			}
			
			$buffer = $buffer."<INPUT TYPE=\"text\" NAME=\"montant".$array[$i]['id_action']."\" VALUE=\"".$r."\" size=\"5\">";
			$buffer = $buffer." - Recharger ? <INPUT TYPE=\"checkbox\" NAME=\"recharge".$array[$i]['id_action']."\" ".$checked.">";
			
			if (!empty($array_reg)) {
				$buffer = $buffer." ".count($array_reg)." <span style='color: blue; text-decoration:underline;' onclick=\"toggle('popup"
					.$array[$i]['id_action']."')\">régulation(s)</span> trouvée(s).";
				
				$div_reg = "<div id='popup".$array[$i]['id_action']."' style='display: none; z-index: 10'>";
				foreach ($array_reg as $reg) {
					if (preg_match("#automatisée#", $reg['commentaire']) && $reg['montant'] == $r) {
						$div_reg = $div_reg."<span style=\"color: red\">id de la régulation : ".$reg['id_action_carte']
							."<br/>montant de la régulation : ".$reg['montant']."<br/>commentaire : ".$reg['commentaire']."</span><br/><br/>";
					} else if ($reg['montant'] == $r) {
						$div_reg = $div_reg."id de la régulation : ".$reg['id_action_carte']
							."<br/>montant de la régulation : <span style=\"color: red\">".$reg['montant']."</span><br/>commentaire : ".$reg['commentaire']."<br/>".
							"<span style=\"color: red\">Cette régulation a le même montant que celui désiré,<br/> elle a pu avoir lieu en réaction au multi-débit.</span><br/>";
					} else {
						$div_reg = $div_reg."id de la régulation : ".$reg['id_action_carte']
							."<br/>montant de la régulation : ".$reg['montant']."<br/>commentaire : ".$reg['commentaire']."<br/><br/>";
					}
				}
				$div_reg = $div_reg."</div>";
				
				$buffer = $buffer.$div_reg;
			}
			
			echo $buffer."</td></tr>\n";
		}
		
		$i = $i + $j;
	}
	$array_for_post = substr($array_for_post, 0, -1);
	

?>
	</tbody>
</table>

<INPUT TYPE="HIDDEN" NAME="listIdVente" VALUE="<?php echo $array_for_post; ?>">

<br/>
<br/>
<div style="text-align: center;">
	<BUTTON CLASS="DEFAULT" ONCLICK="valider()" TYPE="BUTTON">Valider les modifications</BUTTON>
</div>
</FORM>



<?php 



}?>

</div>

</BODY>
</HTML>
